package com.ultron.app.modules.system.entity.sysConfig.bo;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.ultron.app.entity.base.BaseBO;
import com.ultron.app.modules.system.entity.sysConfig.SysConfigPO;
import com.ultron.app.entity.system.ResultEnum;
import com.ultron.app.exception.ServiceException;
import com.ultron.app.util.Func;
import com.ultron.app.util.MpSqlWrapperUtils;
import org.apache.commons.lang3.StringUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;

/**
 * 标题：系统配置(查询业务对象)
 * 说明：系统配置(查询业务对象),常用于查询入参
 * 时间：2024-4-29
 * 作者：admin
 */
@Data
@Accessors(chain = true)
@ApiModel("系统配置(查询业务对象)")
public class SysConfigQueryBO extends BaseBO implements Serializable {
    private static final long serialVersionUID = 1L;


    /**
     * 配置分类：WX_CONFIG
     */
    @ApiModelProperty(value = "配置分类：WX_CONFIG")
    private String type;


    /**
     * 分类文案：微信配置
     */
    @ApiModelProperty(value = "分类文案：微信配置")
    private String typeTxt;


    /**
     * 配置字段名称：WX_APP_ID
     */
    @ApiModelProperty(value = "配置字段名称：WX_APP_ID")
    private String file;


    /**
     * 配置名称：微信APPID
     */
    @ApiModelProperty(value = "配置名称：微信APPID")
    private String title;


    /**
     * 值：test
     */
    @ApiModelProperty(value = "值：test")
    private String val;


    /**
     * 描述
     */
    @ApiModelProperty(value = "描述")
    private String des;


    /**
     * 根据QueryBO获取MP查询Wrapper包装器
     *
     * @return
     */
    public LambdaQueryWrapper<SysConfigPO> getQueryWrapper() {
        if (Func.isEmpty(this)) {
            throw new ServiceException(ResultEnum.PARAM_MISS, "构造查询Wrapper，入参不能为空！");
        }
        LambdaQueryWrapper<SysConfigPO> rsp = MpSqlWrapperUtils.buildQueryWrapper(this);
        rsp.like(StringUtils.isNotBlank(this.getType()), SysConfigPO::getType, this.getType());
        rsp.like(StringUtils.isNotBlank(this.getTypeTxt()), SysConfigPO::getTypeTxt, this.getTypeTxt());
        rsp.like(StringUtils.isNotBlank(this.getFile()), SysConfigPO::getFile, this.getFile());
        rsp.like(StringUtils.isNotBlank(this.getTitle()), SysConfigPO::getTitle, this.getTitle());
        rsp.like(StringUtils.isNotBlank(this.getVal()), SysConfigPO::getVal, this.getVal());
        rsp.like(StringUtils.isNotBlank(this.getDes()), SysConfigPO::getDes, this.getDes());
        return rsp;
    }

}